# 变量 存数据
# 函数 存代码
# 类   存函数，存变量  相同属性或者操作的 放在同一个类中
#
# class 类名称():
#     # 类 存储的东西

# class calc():
#
#     # 在 类中 创建的函数，叫做方法
#     # 方法中，第一个参数，必须是 self
#     # 并且 self 不用传参
#     def add(self, a, b):
#         print(a + b)

# class calc():
#
#     def add(self,a,b):
#         print(a+b)

# # 类的调用
# t1 = calc() # 先调用类
# t1.add(a=10,b=20) # 再调用类中的方法
# t1.add(10,20)


class calc:

    def add(self, a, b):
        print(a + b)

# 继承  , 拥有 父类的 所有东西


class vip(calc):  # vip类 ，继承于 calc 类
    # 对继承过来的方法，可以重写，重写 不会影响 父类
    def add(self, a, b):
        print(a * b)

    def sub(self, a, b):
        print(a - b)


# t2 = calc()
# t2.add(a=10, b=20)


class demo:
    name = '计算器'

    def add(self,a,b):
        print(a+b)


# t1 = demo() # 类的实例化， t1 实例化对象
# print( t1.name )
# t1.name = '计算机'
# print( t1.name )
#
# t2 = demo()
# print( t2.name )
# print( t1.name )


class demo2:

    def t1(self):
        # 在 方法 中 定义的变量，如果想要给其他方法使用
        # 那么 在定义变量时，在变量名前面 +  self.
        self.name = '张三'

    def t2(self):
        print(f'这是t2{self.name}')


a1 = demo2()  # self a1
a1.t1() #  self.name = '张三'  >>>  a1.name = '张三'
a1.t2() # print(self.name)    >>>>  a1.name
a1.name = '李四'
a1.t2() # print(self.name)   #  a1.name

test = demo2() # self  >>> test
test.t2() # self.name  >>>  test.name



# self 是什么：
# self  谁去调用类， self 就是谁








